import unittest

# 创建测试类
from parameterized import parameterized

import utils
from api.login_api import LoginApi


class TestLogin(unittest.TestCase):

    def setUp(self) -> None:
        # 实例化封装类
        self.login_api = LoginApi()

    # 登录成功(正确的手机号和密码)
    @parameterized.expand(utils.read_json("login_case_data"))
    def test01_login_success(self,json_dict,exp_success,exp_code,exp_msg):
        # 调用封装的登录接口的方法，获取响应数据
        res = self.login_api.login(json_dict)
        # 获取字典类型的响应体数据
        res_dict = res.json()
        # print("登录返回的响应体数据：", res_dict)

        # 断言--调用公共断言方法
        utils.common_assert(self,res,exp_success,exp_code,exp_msg)

        # # 断言状态码
        # self.assertEqual(200, res.status_code)
        # # 断言success
        # self.assertEqual(True, res_dict.get("success"))
        # # 断言code
        # self.assertEqual(10000, res_dict.get("code"))
        # # 断言message
        # self.assertIn("操作成功", res_dict.get("message"))


    # 登录失败(请求体为空)
    def test02_login_json_is_none(self):
        # 调用封装的登录接口的方法，获取响应数据
        res = self.login_api.login()
        # 获取字典类型的响应体数据
        res_dict = res.json()
        print("登录返回的响应体数据：", res_dict)

        # 断言
        # 断言状态码
        self.assertEqual(200, res.status_code)
        # 断言success
        self.assertEqual(False, res_dict.get("success"))
        # 断言code
        self.assertEqual(99999, res_dict.get("code"))
        # 断言message
        self.assertIn("系统繁忙", res_dict.get("message"))
